{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Reading data.....\n",
      "    DONE.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>story_id</th>\n",
       "      <th>publisher</th>\n",
       "      <th>publication_date</th>\n",
       "      <th>ingest_date</th>\n",
       "      <th>headline</th>\n",
       "      <th>raw_text</th>\n",
       "      <th>core_of_text</th>\n",
       "      <th>xml_text</th>\n",
       "      <th>status</th>\n",
       "      <th>source</th>\n",
       "      <th>canonical_publisher_id</th>\n",
       "      <th>factiva_accession_no</th>\n",
       "      <th>source_name</th>\n",
       "      <th>source_code</th>\n",
       "      <th>propaganda_classifier_result</th>\n",
       "      <th>label</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34460278</td>\n",
       "      <td>RIA Novosti</td>\n",
       "      <td>2014-05-06</td>\n",
       "      <td>2014-05-12</td>\n",
       "      <td>PACE Chief Says Ukraine Crisis Should be Prior...</td>\n",
       "      <td>MOSCOW, May 6 (RIA Novosti) - The Council of E...</td>\n",
       "      <td>MOSCOW, May 6 (RIA Novosti) - The Council of E...</td>\n",
       "      <td>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\\n&lt;story...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Release187</td>\n",
       "      <td>167</td>\n",
       "      <td>RVESEN0020140506ea56006k5</td>\n",
       "      <td>RIA Novosti</td>\n",
       "      <td>RVESEN</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>34460804</td>\n",
       "      <td>RIA Novosti</td>\n",
       "      <td>2014-05-06</td>\n",
       "      <td>2014-05-12</td>\n",
       "      <td>Ukraine’s Donetsk and Luhansk Regions Will Boy...</td>\n",
       "      <td>MOSCOW, May 6 (RIA Novosti) – Residents of Ukr...</td>\n",
       "      <td>MOSCOW, May 6 (RIA Novosti) – Residents of Ukr...</td>\n",
       "      <td>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\\n&lt;story...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Release187</td>\n",
       "      <td>167</td>\n",
       "      <td>RVESEN0020140506ea56005pl</td>\n",
       "      <td>RIA Novosti</td>\n",
       "      <td>RVESEN</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34462377</td>\n",
       "      <td>RIA Novosti</td>\n",
       "      <td>2014-05-06</td>\n",
       "      <td>2014-05-12</td>\n",
       "      <td>Anti-Coup Protesters to Rally in Odessa Despit...</td>\n",
       "      <td>Vadim Savenko\\nMOSCOW, May 6 (RIA Novosti) - O...</td>\n",
       "      <td>Vadim Savenko\\nMOSCOW, May 6 (RIA Novosti) - V...</td>\n",
       "      <td>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\\n&lt;story...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Release187</td>\n",
       "      <td>167</td>\n",
       "      <td>RVESEN0020140506ea56002pb</td>\n",
       "      <td>RIA Novosti</td>\n",
       "      <td>RVESEN</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>34462777</td>\n",
       "      <td>RIA Novosti</td>\n",
       "      <td>2014-05-06</td>\n",
       "      <td>2014-05-12</td>\n",
       "      <td>New Ships, Subs to Boost Russia’s Black Sea Fl...</td>\n",
       "      <td>Russian Defense Minister Sergei Shoigu\\nMOSCOW...</td>\n",
       "      <td>Russian Defense Minister Sergei Shoigu\\nMOSCOW...</td>\n",
       "      <td>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\\n&lt;story...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Release187</td>\n",
       "      <td>167</td>\n",
       "      <td>RVESEN0020140506ea560025v</td>\n",
       "      <td>RIA Novosti</td>\n",
       "      <td>RVESEN</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>34462963</td>\n",
       "      <td>RIA Novosti</td>\n",
       "      <td>2014-05-06</td>\n",
       "      <td>2014-05-12</td>\n",
       "      <td>Ukrainian Party Demands Resignation of Acting ...</td>\n",
       "      <td>MOSCOW, May 6 (RIA Novosti) – Ukraine’s Party ...</td>\n",
       "      <td>MOSCOW, May 6 (RIA Novosti) – Ukraine’s Party ...</td>\n",
       "      <td>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\\n&lt;story...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Release187</td>\n",
       "      <td>167</td>\n",
       "      <td>RVESEN0020140506ea56001me</td>\n",
       "      <td>RIA Novosti</td>\n",
       "      <td>RVESEN</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   story_id    publisher publication_date ingest_date  \\\n",
       "0  34460278  RIA Novosti       2014-05-06  2014-05-12   \n",
       "1  34460804  RIA Novosti       2014-05-06  2014-05-12   \n",
       "2  34462377  RIA Novosti       2014-05-06  2014-05-12   \n",
       "3  34462777  RIA Novosti       2014-05-06  2014-05-12   \n",
       "4  34462963  RIA Novosti       2014-05-06  2014-05-12   \n",
       "\n",
       "                                            headline  \\\n",
       "0  PACE Chief Says Ukraine Crisis Should be Prior...   \n",
       "1  Ukraine’s Donetsk and Luhansk Regions Will Boy...   \n",
       "2  Anti-Coup Protesters to Rally in Odessa Despit...   \n",
       "3  New Ships, Subs to Boost Russia’s Black Sea Fl...   \n",
       "4  Ukrainian Party Demands Resignation of Acting ...   \n",
       "\n",
       "                                            raw_text  \\\n",
       "0  MOSCOW, May 6 (RIA Novosti) - The Council of E...   \n",
       "1  MOSCOW, May 6 (RIA Novosti) – Residents of Ukr...   \n",
       "2  Vadim Savenko\\nMOSCOW, May 6 (RIA Novosti) - O...   \n",
       "3  Russian Defense Minister Sergei Shoigu\\nMOSCOW...   \n",
       "4  MOSCOW, May 6 (RIA Novosti) – Ukraine’s Party ...   \n",
       "\n",
       "                                        core_of_text  \\\n",
       "0  MOSCOW, May 6 (RIA Novosti) - The Council of E...   \n",
       "1  MOSCOW, May 6 (RIA Novosti) – Residents of Ukr...   \n",
       "2  Vadim Savenko\\nMOSCOW, May 6 (RIA Novosti) - V...   \n",
       "3  Russian Defense Minister Sergei Shoigu\\nMOSCOW...   \n",
       "4  MOSCOW, May 6 (RIA Novosti) – Ukraine’s Party ...   \n",
       "\n",
       "                                            xml_text status      source  \\\n",
       "0  <?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n<story...    NaN  Release187   \n",
       "1  <?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n<story...    NaN  Release187   \n",
       "2  <?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n<story...    NaN  Release187   \n",
       "3  <?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n<story...    NaN  Release187   \n",
       "4  <?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n<story...    NaN  Release187   \n",
       "\n",
       "   canonical_publisher_id       factiva_accession_no  source_name source_code  \\\n",
       "0                     167  RVESEN0020140506ea56006k5  RIA Novosti      RVESEN   \n",
       "1                     167  RVESEN0020140506ea56005pl  RIA Novosti      RVESEN   \n",
       "2                     167  RVESEN0020140506ea56002pb  RIA Novosti      RVESEN   \n",
       "3                     167  RVESEN0020140506ea560025v  RIA Novosti      RVESEN   \n",
       "4                     167  RVESEN0020140506ea56001me  RIA Novosti      RVESEN   \n",
       "\n",
       "   propaganda_classifier_result  label  \n",
       "0                             1      1  \n",
       "1                             1      1  \n",
       "2                             1      1  \n",
       "3                             1      1  \n",
       "4                             1      1  "
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "print(\"Reading data.....\")\n",
    "pro_russian_data = pd.read_csv('./data/pro-russian.csv')\n",
    "not_pro_russian_data = pd.read_csv('./data/not-pro-russian.csv')\n",
    "print('    DONE.')\n",
    "\n",
    "\n",
    "# pro_russian_label = 1\n",
    "# not_pro_russian_label = 0\n",
    "pro_russian_data['label'] = 1\n",
    "not_pro_russian_data['label'] = 0\n",
    "pro_russian_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_length(text):\n",
    "    n = len(text.split())\n",
    "    return n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "length of pro_russian_data: 5244\n",
      "length of not_pro_russian_data: 22064\n",
      "sampled data: 5244\n",
      "10488\n"
     ]
    }
   ],
   "source": [
    "cols_to_keep = ['story_id', 'raw_text', 'label']\n",
    "pro_russian_data = pro_russian_data[cols_to_keep]\n",
    "print('length of pro_russian_data:', len(pro_russian_data))\n",
    "pro_russian_data['len'] = pro_russian_data['raw_text'].apply(get_length) \n",
    "# print(pro_russian_data.groupby(['len']).count())\n",
    "\n",
    "not_pro_russian_data = not_pro_russian_data[cols_to_keep]\n",
    "print('length of not_pro_russian_data:', len(not_pro_russian_data))\n",
    "not_pro_russian_data['len'] = not_pro_russian_data['raw_text'].apply(get_length)\n",
    "not_pro_russian_data_sample=not_pro_russian_data.sample(n=5244, replace=True, random_state=1)\n",
    "print('sampled data:', len(not_pro_russian_data_sample))\n",
    "# not_pro_russian_data.head()\n",
    "\n",
    "frames = [pro_russian_data, not_pro_russian_data_sample]\n",
    "df = pd.concat(frames)\n",
    "print(len(df))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '# of comments')"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import numpy as np\n",
    "\n",
    "sns.set(style='darkgrid')\n",
    "\n",
    "# Increase the plot size and font size.\n",
    "sns.set(font_scale=1.5)\n",
    "plt.rcParams['figure.figsize'] = (10,5)\n",
    "\n",
    "# Truncate any comment lengths greater tahn 512.\n",
    "lengths_pro_russian_data = pro_russian_data.len.to_numpy()\n",
    "lengths_pro_russian_data = lengths_pro_russian_data[lengths_pro_russian_data<1500]\n",
    "\n",
    "legth_not_pro_russian_data = not_pro_russian_data.len.to_numpy()\n",
    "legth_not_pro_russian_data = legth_not_pro_russian_data[legth_not_pro_russian_data<1500]\n",
    "\n",
    "# Plot the distribution of comment lengths.\n",
    "sns.distplot(lengths_pro_russian_data, kde=False, rug=False)\n",
    "sns.distplot(legth_not_pro_russian_data, kde=False, rug=False, color='y')\n",
    "plt.title('Comment lengths')\n",
    "plt.xlabel('Comment length')\n",
    "plt.ylabel ('# of comments')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "def clean_tweets(tweet):\n",
    "\n",
    "    tweet = (tweet.encode(\"ascii\", errors=\"ignore\").decode()).lower()\n",
    "    tweet = tweet.replace(\"\\n\", \" \")\n",
    "    tweet = tweet.replace(\"\\r\", \" \")\n",
    "    return tweet\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "df['raw_text'] = df.raw_text.apply(clean_tweets)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train counts:        story_id  raw_text   len\n",
      "label                          \n",
      "0          4208      4208  4208\n",
      "1          4182      4182  4182\n",
      "test counts:        story_id  raw_text   len\n",
      "label                          \n",
      "0          1036      1036  1036\n",
      "1          1062      1062  1062\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "train, test = train_test_split(df, test_size=0.20, random_state=42, shuffle=True)\n",
    "print('train counts:', train.groupby('label').count())\n",
    "print('test counts:', test.groupby('label').count())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "if not os.path.exists('./data/'):\n",
    "    os.mkdir('./data/')\n",
    "data_dir = './data/'    \n",
    "# determine the path where to save the train and test file\n",
    "train_path = data_dir + 'train.tsv'\n",
    "test_path = data_dir + 'test.tsv'\n",
    "\n",
    "# save the train and test file\n",
    "# again using the '\\t' separator to create tab-separated-values files\n",
    "train.to_csv(train_path, sep='\\t', index=False)\n",
    "test.to_csv(test_path, sep='\\t', index=False)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
